本发明公开了一种针对多窗口应用的图形并行更新方法,该方法包括:根据应用的窗口信息将整个屏幕区域划分为多个子区域,并计算所述子区域的重叠度;当更新应用窗口时,根据所述子区域的重叠度信息分步更新所述应用窗口对应子区域的内容。本发明减少了应用间窗口更新所需的时间,提高了系统的并行处理能力。
1.一种嵌入式多窗口应用图形并行更新方法,其特征在于,该方法包括:xa0根据应用的窗口信息将整个屏幕区域划分为多个子区域,并计算所述子区域的重叠度;xa0当更新应用窗口时,根据所述子区域的重叠度信息分步更新所述应用窗口对应子区域的内容;xa0所述根据应用的窗口信息将整个屏幕区域划分为多个子区域的步骤包括:xa0在所有窗口中计算两两窗口之间的重叠区域,构成第一子窗口集合;xa0在所述第一子窗口集合中,进一步计算子窗口两两之间的重叠区域,构成第二子窗口集合,直至所述子窗口集合的空间大小为1或0;xa0根据所述子窗口集合划分屏幕子区域;在所述根据所述子区域的重叠度信息分步更新所述应用窗口对应子区域的内容的步骤中优先选择空闲且重叠度高的子区域进行更新,并对更新过的子区域进行标识。xa0
2.根据权利要求1所述的方法,其特征在于,所述重叠度是指所述子区域所覆盖的应用窗口数目。xa0
3.根据权利要求1所述的方法,其特征在于,所述窗口信息包括窗口的位置和/或窗口的大小。xa0
4.根据权利要求1所述的方法,其特征在于,当所述子区域的xa0重叠度为一时,则直接更新所述子区域;当所述子区域的重叠度大于一时,则通过加锁的方式来更新所述子区域。xa0
5.根据权利要求1所述的方法,其特征在于,所述子区域通过位图来表示。xa0
6.根据权利要求5所述的方法,其特征在于,该方法根据所述位图搜索需要更新的子区域。xa0
7.根据权利要求5所述的方法,其特征在于,所述子区域的重叠度按大小排序,所述重叠度大的优先更新。xa0
8.根据权利要求1所述的方法,其特征在于,当有应用加入或退出时,则重新划分并计算屏幕子区域信息。xa0
技术领域本发明涉及嵌入式技术领域,特别涉及一种嵌入式多窗口应用图形并行更新方法。
背景技术随着嵌入式与多媒体技术的快速发展,电视终端正由传统的娱乐中心转向集公共广播、信息服务、文化娱乐、交流互动于一体的家庭多媒体信息平台,多应用的盛行促使电视终端图形系统必须支持多窗口并行显示技术。特别是一些如游戏、信息类应用,需要频繁地对屏幕显示进行更新操作。另外,不同于手机、PDA等低分辨率设备,电视终端的图形分辨率较高,多为1280x720、1920x1080。为满足多窗口并行显示、频繁刷新和高分辨率的需求,必须对嵌入式电视终端有限的图形处理性能进行优化。在现有技术中,当应用更新窗口时,首先锁定整个屏幕区域,然后更新窗口内容,最后释放锁定。这种方法没有考虑窗口位置和大小信息,当一个应用锁定整个屏幕时,其他应用无法对屏幕进行操作。但是,在多窗口应用下,并不是所有的应用窗口都覆盖整个屏幕,有可能两个应用的窗口在屏幕上没有相交部分,没有必要分别锁定、更新。这种方法没有考虑窗口信息而盲目锁定整个屏幕,导致其他应用更新阻塞,增大了等待时间,降低了系统的并行性。
发明内容本发明的目的是解决上述现有技术所存在的问题。为实现上述目的,本发明提供了一种多窗口应用的图形并行更新方法,该方法包括:根据应用的窗口信息将整个屏幕区域划分为多个子区域,并计算所述子区域的重叠度(degreexa0ofxa0overlap);当更新应用窗口时,根据所述子区域的重叠度信息分步更新所述应用窗口对应子区域的内容。根据本发明的方法,可以减少应用间窗口更新所需的时间,进一步提高了系统的并行处理能力。
附图说明图1是本发明实施例多窗口应用的图形并行更新方法的流程图;图2是本发明实施例多窗口应用的图形并行更新方法的屏幕划分流程图;图3是本发明实施例多窗口应用示例图;图4是本发明实施例应用窗口更新流程图。
具体实施方式下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。图1是本发明实施例多窗口应用的图形并行更新方法的流程图。如图所示,该方法包括步骤101-102:在步骤101,根据多个应用的窗口信息将整个屏幕区域划分为多个子区域,并计算所述子区域的重叠度。具体地,嵌入式电视终端设备在多个应用加入时,根据所有应用的窗口信息,例如窗口位置和窗口大小信息将整个显示屏幕区域划分为多个子区域,并计算上述多个子区域的重叠度信息。上述重叠度是指多个子区域中的其中一个子区域所覆盖的应用窗口数目。另外,当有新的应用加入或退出时,则重新划分并计算屏幕的子区域信息。以下针对子区域的重叠度进行定义:假设有n个应用,分别对应于n个窗口w
1,w
2,......,w
n,记集合W
(1)={w
1,w
2,...,w
n}。对于屏幕上任意子区间V,集合W
(1)中存在l个应用窗口w
i1,w
i2,......,w
il覆盖区间V,则称l为区间V的重叠度。以下结合图2,针对上述屏幕区域划分的具体算法进行描述:如图2所示,在步骤200,设W
(K)为所有应用窗口构成的集合,其中K=1。在步骤201,根据窗口集合W
(K)中各窗口两两之间的关系,若两者之间存在重叠区域,则计算出任意两个区间的重叠区域,重叠区域构成的集合记为W
(K+1),W
(k+1)={w
ij|w
ij∈w
i,w
ij∈w
j}。在步骤202,判断集合W
(K+1)中的窗口个数是否大小1。如果是,则执行步骤210,令K=k+1,返回到步骤201;如果不是,则执行步骤203。以此类推,继续计算W
(K+2)、W
(K+3)、......中的重叠区域,直至为空。在步骤203,根据窗口集合W
(K)、W
(K+1),......,将整个屏幕区域进行划分。在实际应用情况下,由于多个应用的窗口之间的重叠度不会太大,因此递推次数有限。假设最终的重叠度最大值为l,即通过以上的方法共得到l个集合{W
(1),W
(2),...W
(l)}。不难看出,W
(l)中的所有区域的任意子区间的重叠度均为l。由于集合W
(l-1)中包含了W
(l),因此其任意子区间的重叠度为l或l-1,但W
(l-1)-W
(l)的子区间的重叠度为l-1。假设集合U
(i)中的区间个数为C
i,屏幕被划分的区域包括:重叠度为l的集合U
(l)中区间个数为C
l,U
(l)=W
(l);重叠度为m的集合U
(m)中区间个数为C
m,U
(m)计算如下:
U ( m ) = { u i | u i = w i ( m ) - Σ j w ij ( m + 1 ) + Σ k w ijk ( m + 2 ) - · · · } , ]]>其中w
i(m)∈W
(m),w
ij(m+1)∈w
i(m),w
ijk(m+2)∈w
ij(m+1),...;重叠度为1的集合U
(1)中区间个数为C
1,U
(1)计算如下:
U ( 1 ) = { u i | u i = w i - Σ j w ij ( 2 ) + Σ k w ijk ( 3 ) - · · · } , ]]>其中w
i∈W
(1),w
ij(2)∈w
i,w
ijk(3)∈w
ij(2)...;最终整个屏幕将被划分为
![]()
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="190"/>个区间,其集合形式可表示为
U = { Σ m = 1 l U ( m ) } . ]]>在一个例子中,以一个四元级(x
1,y
1,x
2,y
2)表征一个窗口参数,其中(x
1,y
1)为窗口左上角坐标,(x
2,y
2)为窗口右下角坐标,选取屏幕左上角为坐标原点。任意两个窗口(x
i1,y
i1,x
i2,y
i2)和(x
j1,y
j1,x
j2,y
j2),当窗口坐标满足关系式max(x
i1,x
j1)
i2,xj2)且max(yi1,yj1)i2,yj2)时,存在重叠部分,重叠窗口的坐标为(max(xi1,xj1),max(yi1,yj1),min(xi2,xj2),min(yi2,yj2))。以下结合图3,阐述多窗口应用的具体实例。如图3所示,共有4个窗口应用,其整个屏幕的图形分辨率为1280x720。其中,w1为全屏的应用,窗口坐标为(0,0,1280,720),即包括区域U1、U2、U3和U4;w2应用占据屏幕的左半边,坐标参数为(0,0,640,720),即包括区域U1、U2和U3;w3应用占据w2的下半部分,坐标参数为(0,360,640,720),即包括区域U1和U2;w4应用占据w3的右半部分,坐标参数为(320,360,640,720),即区域U1。根据我们的屏幕划分方法,可分为以下几个步骤:步骤一,在应用窗口集合w(1)中找出两两窗口重叠部分,构成集合w(2),共有6个窗口,包括w1,2(0,0,640,720),w1,3(0,360,640,720),w1,4(320,360,640,720),w2,3(0,360,640,720),w2,4(320,360,640,720)和w3,4(320,360,640,720),其中wi,j指第i个窗口和第j个窗口的重叠区域;步骤二,继续在应用窗口集合w(2)中找出两两窗口重叠部分,构成集合w(3),包括3个窗口w1,2,3(0,360,360,720),w1,2,4(320,360,640,720),w1,3,4(320,360,640,720);步骤三,继续在应用窗口集合w(3)中找出两两窗口重叠部分,构成集合w(4),包括1个窗口w1,2,3,4(320,360,640,720)。因此得到划分屏幕的子区域集合,该子区域集合包括:一个重叠度为4的窗口u1,坐标为(320,360,640,720);一个重叠度为3的窗口u2,坐标为(0,360,320,720);一个重叠度为2的窗口u3,坐标为(0,0,640,360);一个重叠度为1的窗口u4,坐标为(640,0,1280,720)。在步骤102,当更新应用窗口时,根据所述子区域的重叠度信息分步更新所述应用窗口对应子区域的内容。当需要被更新的子区域的重叠度为一时,表明该子区域只被一个应用所使用,可直接更新该子区域;当子区域的重叠度大于一时,则通过加锁的方式来更新该子区域,以保证该子区域间多应用的互斥访问。本发明实施例子区域分步更新的方法包括以下步骤:1、首先确定窗口需要更新的所有屏幕子区域;2、在所需要更新的区域中优先选择空闲且重叠度高的子区域进行更新,并对更新过的子区域进行标识;3、继续按步骤2的方法更新未更新的子区域,直到所有子区域更新完毕。在一个实施例中,每个应用通过使用一个位图来表示各自窗口需要更新的子区域,置位表示该子区域包含在该应用窗口中。例如,应用1的位图为(1,1,1,1),表明该应用1的窗口覆盖了u1、u2、u3、u4。依次类推应用2的位图为(1,1,1,0),应用3的位图为(1,1,0,0),应用4的位图为(1,0,0,0)。下面结合图4,以更新应用1窗口为例说明分布更新的方法,如图4所示,该方法包括步骤401-406:在步骤401,获取应用1窗口对应的位图。图4所示的应用1窗口的位图为(1,1,1,1),表明该应用1的窗口覆盖了u1、u2、u3、u4。在步骤402,根据子区域位图搜索可更新的子区域。具体地,根据应用1的位图(1,1,1,1)搜索需要更新且未被其他应用占用的子区域。子区域的重叠度按大小排序,位图顺序对应的子区域的重叠度从大到小依次排列。由于重叠度越大的子区域越容易发生更新冲突,因此根据应用位图从头搜索可以优先保证重叠度大的且空闲的子区域被更新,进一步降低冲突的可能性。在步骤403,根据步骤402搜索结果更新应用1对应的子区域。在步骤404,将更新后的子区域在位图中的对应位清零。在一例子中,假设应用4所对应的子区域U4正被其他应用所占用,则只更新应用1所覆盖的子区域U1、U2和U3,更新后的应用1位图为(0,0,0,1),即将原位图(1,1,1,1)中子区域U1、U2和U3对应的二进制“1”清零。在步骤405,判断位图是否有标志位被置位,即位图中子区域所对应的二进制是“1”。若有,则说明仍有未被更新的子区域,转向步骤402,否则转向步骤406。在步骤406,更新完成。本发明实施例将整个屏幕根据重叠度进行分割,使得多窗口应用能够尽可能并行更新窗口,提高了系统的并行性。另外,由于在更新应用窗口时根据重叠度的高低进行子区域的更新,进一步地降低应用间更新窗口冲突的可能性,减少了窗口更新所需的时间。以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。